//  配置路由
import Vue from 'vue';
import VueRouter from 'vue-router';
import routes from "./routes"
//使用插件
Vue.use(VueRouter);


import store from '@/store'
//配置路由

let router = new VueRouter({
    routes,
    // 滚动行为 详情页
    scrollBehavior(to, from, savedPosition) {
        // y:0  表示滚动条在最上面
        return { y: 0 }
    }
})
//  全局守卫，前置守卫  (to,from,next)next 是一个函数
router.beforeEach(async (to, from, next) => {
    let token = store.state.user.token;
    let name = store.state.user.userInfo.name;
    if (token) {   // 已经登录
        if (to.path == '/login') {
            next('/home')
        }
        else {
            if (name) {  // 有用户名
                next();
            }
            else {      //没有用户名            // 没有用户信息，派发action 让仓库存储用户信息再登录
                try {
                    await store.dispatch('getUserInfo');
                    next();
                } catch (error) {
                    //  token 失效  清除token 重新登录
                    await store.dispatch('userLogout');
                    next('/login')
                }
            }
        }
    } else {   //  未登录 不能去交易相关 支付相关 个人中心
        let toPath = to.path;
        if (toPath.indexOf('/trade') != -1 || toPath.indexOf('/pay') != -1 || toPath.indexOf('/center') != -1) {
            next('/login?redirect='+toPath)
        }
        else {
            next()
        }
       
    }
})

export default router;